package cn.fxzhang.leetcode.contest.weekd50;

/**
 * 5719. 每个查询的最大异或值
 *
 * 类型：数值计算
 * 题解：略
 * 时间复杂度：O(N)
 * 空间复杂度：O(1)
 *
 * 提交记录(1/1)：
 * 执行用时: 2 ms
 * 内存消耗: 54.1 MB
 *
 * 【中等】通过次数2,289提交次数3,716
 * @author 张晓帆
 * @date 2021/4/17
 */
public class P5719_Maximum_Xor_For_Each_Query {

    public int[] getMaximumXor(int[] nums, int maximumBit) {
        int m=(1<<maximumBit)-1;
        int n = nums.length;
        int[] ans = new int[n];
        int x = 0;
        for (int i=0; i<n; i++){
            x = x ^ nums[i];
            ans[n-i-1] = m-x;
        }
        return ans;
    }
}
